import Axios from 'axios'

Axios.interceptors.request.use((config) => {
  // 在发送请求之前做些什么
  return config
}, function (error) {
  // 对请求错误做些什么
})

Axios.interceptors.response.use((response) =>{
  // 2xx 范围内的状态码都会触发该函数。
  // 对响应数据做点什么
  return response
}, function (error) {
  // 超出 2xx 范围的状态码都会触发该函数。
  // 对响应错误做点什么
  let errorText = ''
  let errorStatus = ''
  if (!error.response) {
    errorText = '数据请求异常'
    errorStatus = 0
  } else {
    const {status} = error.response
    errorStatus = status
    const code2Text = {
      401: () => '用户登录信息已过期',
      403: () => '权限不足',
      404: () => '请求地址不存在',
      500: () => '服务器异常',
      502: () => '服务器网关错误',
    }
    errorText = code2Text[status] || '数据请求异常'
  }
  const e = new Error(errorText)
  e.status = errorStatus
  e.rawError = error
  return Promise.reject(e)
})

const axios = Axios.create({
  baseURL: import.meta.env.API_HOST
})

export default axios